Skip to main content

Sistema de Consultas

El módulo Query permite recuperar y filtrar dinosaurios desde la base de datos MySQL. Está compuesto por tres archivos con responsabilidades separadas.


Archivos del módulo

ArchivoResponsabilidad
QueryService.csAcceso a datos — ejecuta las consultas contra la BD
QueryMenu.csOrquestación — maneja la entrada del usuario y llama a QueryService
Queries.csQueries auxiliares sobre listas en memoria (capa opcional)

Flujo de ejecución

Program.cs (menú principal)

└─► QueryMenu.Handle(opción)

└─► QueryService.[método]()

└─► MySqlDbContext.Dinosaurs

└─► MySQL (tabla Dinosaurs)

Resumen de consultas disponibles

#Opción del menúMétodo en QueryServiceDescripción breve
1List all dinosaursGetAllDinosaurs()Todos los registros
2Get by IdGetDinosaurById(id)Uno por ID numérico
3Get by Register CodeGetDinosaurByCode(code)Uno por código único
4Filter by ZoneGetDinosaursByZone(zone)Filtro por zona del parque
5Filter by SectorGetDinosaursBySector(sector)Filtro por sector
6Filter by AgeGetDinosaursByAge(age)Mayores a una edad
7Filter by TypeGetDinosaursByType(type)Herbívoros o Carnívoros
8Name + Register CodeGetDinosaursForReports()Vista resumida para reportes
9Count totalGetAllDinosaurs() + countTotal de dinosaurios
10Count by ZoneGetDinosaursByZone(zone) + countCantidad en una zona
11Count by SectorGetDinosaursBySector(sector) + countCantidad en un sector
12Without TrackNumberGetDinosaursWoTracking()Sin número de rastreo
13Without AddressGetDinosaursWoAddress()Sin dirección registrada
14By creation dateOrderByCreationDate()Ordenados por fecha de registro
15Order by SpeciesDinosaursBySpecies()Ordenados alfabéticamente por especie

Estrategia de carga

Todas las consultas usan el método privado All() como punto de entrada:

private List<Dinosaur> All() => _db.Dinosaurs.ToList();
Nota de rendimiento

El método All() trae todos los registros a memoria antes de filtrar. Para colecciones pequeñas esto es aceptable, pero para datasets grandes se recomienda migrar los filtros a consultas LINQ-to-SQL directas con .Where() antes de .ToList().